package com.example.demo.netty.chat_room.util;

import com.example.demo.netty.chat_room.domain.MessageProtocol;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import io.netty.handler.codec.MessageToMessageEncoder;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;

import java.util.List;

public class MessageEncoder extends MessageToMessageEncoder<MessageProtocol> {


    @Override
    protected void encode(ChannelHandlerContext ctx, MessageProtocol messageProtocol, List<Object> list) throws Exception {
        // 创建一个byteBuf
        ByteBuf byteBuf = ctx.alloc().buffer();
        // 封包
        byteBuf.writeInt(messageProtocol.getLength());
        byteBuf.writeBytes(messageProtocol.getData());
        // 添加进输出列表,会直接发出去的
        // 这里注释掉的是直接转为二进制帧让websocket正常发
//        list.add(new BinaryWebSocketFrame(byteBuf));
        list.add(byteBuf);
    }
}
